package main

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"io"
	"os"
)

func main() {
	// 待加密字符串
	s := "https://www.tizi365.com"

	// 进行md5加密，因为Sum函数接受的是字节数组，因此需要注意类型转换
	srcCode := md5.Sum([]byte(s))

	// md5.Sum函数加密后返回的是字节数组，需要转换成16进制形式
	code := fmt.Sprintf("%x", srcCode)

	fmt.Println(string(code))
}

// 数据加密
func MD5data(data string) string {
	hash := md5.New()
	hash.Write([]byte(data))
	//hash.Write([]byte(data + "我是MD5")) 加盐
	return hex.EncodeToString(hash.Sum(nil))
}

// 文件加密
func FileMD5(filePath string) (string, error) {
	file, err := os.Open(filePath)
	if err != nil {
		return "", err
	}
	hash := md5.New()
	_, _ = io.Copy(hash, file)
	return hex.EncodeToString(hash.Sum(nil)), nil
}
